<?php
namespace app\common\business;

use think\facade\Cache;
use app\common\lib\Key;
class Pay extends BusiBase{
	public $model = null;
	public function __construct(){

	}

	//订单支付
	public function unifiedOrder($appId,$payType,$data){
		$payData = [
			'pay_status' => 1, //0:待支付 1:已支付
			'pay_type' => $payType,
			'create_time' => time(),
		];
		//return $payData;
		//调用第三方支付系统
		$result = 'SUCCESS';

		try{
			//记录数据到redis中
			/*
			 Redis Hset 命令用于为哈希表中的字段赋值 。
			 如果哈希表不存在，一个新的哈希表被创建并进行 HSET 操作。
			 如果字段已经存在于哈希表中，旧值将被覆盖。
			 命令基本语法:
			 HSET KEY_NAME FIELD VALUE 
			*/
			Cache::store('redis')->hSet(
				Key::orderKey($appId),
				$data['order_id'],
				json_encode($payData)
			);
		}catch(\Exception $e){
			echo $e->getMessage();exit;
			return false;
		}
		
		return ['code' => $result];
		//return $result;
	}
	
	//支付订单查询
	public function getOrder($orderId,$appId){
		$res = [];
		try{
			//redis中获取订单数据
			/**
				Redis Hget 命令用于返回哈希表中指定字段的值。
				命令基本语法:
				HGET KEY_NAME FIELD_NAME 
			*/
			if($orderId){
				//$result = Cache::store('redis')->hGet(Key::orderKey($appId),$orderId);
				$result = Cache::hGet(Key::orderKey($appId),$orderId);
				//dump($result);exit;
				if($result){
					$result = json_decode($result,true);
					$res[$orderId] = $result;
				}
			}else{
				//利用hgetall获取支付订单列表
		 		$result = Cache::hGetAll(Key::orderKey($appId));
		 		//dump($result);exit;
		 		foreach ($result as $key => $value) {
		 			$res[$key] = json_decode($value,true);
		 		}
		 		//print_r($res);exit;
			}
			//print_r($res);exit;
		}catch(\Exception $e){
			return [];
		}
		/*
		if($result){
			$result = json_decode($result,true);
		}
		*/
		return $res;
	}
}